﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using INSTA.BankApplication.DAL;
using NUnit.Framework;
using System.Reflection;
using INSTA.Library;

namespace INSTA.BankApplication.DAL.Tests
{
    [TestFixture]
    public class Test_ObjectsConformance
    {

        /// <summary>
        /// Teste s'il existe des classes non abstraites héritant
        /// de DataMapper et non-décorées avec un TableAttribute.
        /// </summary>
        [Test]
        public void Test_MappedObject_WithoutTableAttribute()
        {
            // On parcourt toutes les classes dans l'assembly en cours.
            var query = (from type in this.GetType().Assembly.GetTypes()
                        where !type.IsAbstract &&
                              type.IsDerivedFrom<DataMapper>()
                              && !type.IsDecoratedWith<TableAttribute>()
                        select type.Name).ToList();


            bool result = query.Count == 1 && query.Contains("MockPersonWithoutTableAttribute");
            ObjectDumper.Write(query);

            Assert.IsTrue(result);

            
        }



    }
}
